/**
 * 
 */
package com.jushu.storbox.service;

import java.util.List;

import android.content.Context;

import com.jushu.storbox.entities.FileFolderInfo;
import com.huawei.sharedrive.sdk.android.exception.ClientException;
import com.huawei.sharedrive.sdk.android.model.request.FolderBaseRequest;
import com.huawei.sharedrive.sdk.android.model.request.FolderCreateRequest;
import com.huawei.sharedrive.sdk.android.modelV2.request.FolderCopyRequstV2;
import com.huawei.sharedrive.sdk.android.modelV2.request.FolderMoveRequstV2;
import com.huawei.sharedrive.sdk.android.modelV2.response.FolderListResponseV2;
import com.huawei.sharedrive.sdk.android.modelV2.response.FolderResponse;

public interface IRemoteShareFolderService {
	/**
	 * @param folderId
	 * @return
	 * @throws ClientException 
	 */
	public FolderResponse getFolderResponse(String ownerId, String folderId) throws ClientException;
	
	/**
	 * @param folderID
	 * @param des
	 * @param limit
	 * @param offset
	 * @param orderby
	 * @return
	 * @throws ClientException
	 */
	public FolderListResponseV2 getFolderListResponse(String folderID, String des, int limit,
			int offset, String orderby) throws ClientException ;
	
	
	/**
	 * @param context
	 * @param folderID
	 * @param des
	 * @param limit
	 * @param offset
	 * @param orderby
	 * @return
	 * @throws ClientException
	 */
	public List<FileFolderInfo> getFolderList(Context context, String folderID, String des, int limit,
			int offset, String orderby) throws ClientException ;
	/**
	 * @param folderID
	 * @param name
	 * @return
	 * @throws ClientException
	 */
	public FolderResponse renameFolder(String folderID, String name) throws ClientException;

	/**
	 * @param request
	 * @param name
	 * @return
	 * @throws ClientException
	 */
	public FolderResponse renameFolderInfo(FolderBaseRequest request, String name) throws ClientException;

	/**
	 * @param folderID
	 * @return
	 */
	public String deleteFolder(String ownerId, String folderID) throws ClientException;
	/**
	 * @param FolderBaseRequest
	 * @return
	 */
	public String deleteFolder(FolderBaseRequest request) throws ClientException;

	/**
	 * @param request
	 * @return
	 */
	public FolderResponse createFolder(String ownerId, FolderCreateRequest request) throws ClientException;

	/**
	 * @param folderID
	 * @param request
	 * @return
	 */
	public FolderResponse moveFolder(String ownerId, String folderID, FolderMoveRequstV2 request) throws ClientException;

	/**
	 * 
	 * @param folderID
	 * @param request
	 * @return
	 * @throws ClientException
	 */
	public FolderResponse copyFolder(String ownerId, String folderID, FolderCopyRequstV2 request) throws ClientException;
	
	/**
	 * @param context
	 * @param folderId
	 * @return
	 * @throws ClientException 
	 */
	public boolean isUpdate(Context context, FileFolderInfo info) throws ClientException;
	
	
	public FolderResponse copyFolderToTarget(FileFolderInfo savedFileFolderInfo, FileFolderInfo targetFolder) 
			throws ClientException;
}
